/*
    能发送 ajax 请求的函数模块
    包装 axios
    函数的返回值是 promise 对象
    axios.get()/post() 返回的就是 promise 对象
    返回自己创建的 promise 对象 :
        统一处理请求异常
        异步返回结果数据 , 而不是包含结果数据的 response
    优化：统一处理请求异常
        在外层抱一个自己创建的 promise 对象
        在请求出错时，不 reject(error), 而是提示错误显示
    优化2: 异步得到不是 reponse, 而是 response.data
        在请求成功 resolve 时: resolve(response.data)
*/
import axios from 'axios'
import {message} from 'antd'

export default function ajax(url, data = {}, method = 'GET') {
    return new Promise(function(resolve, reject) {
        let promise;
        // 执行异步 ajax 请求
        if(method === 'GET') {
            promise = axios.get(url, {params : data}); // params 配置指定的是 query 参数
        }else {
            promise = axios.post(url, data);
        }
        promise.then(response => { // 对所有 ajax 请求出错做统一处理，外层就不用再处理错误了
            // 如果成功，调用 response.data
            resolve(response.data);
        }).catch(error => {
            // 失败，提示后台出错
            message.error('请求错误: ' + error.message);
        });
    })
}